home *** CD-ROM | disk | FTP | other *** search
- /* primes.c */
- /* Copyright 1992 by P.J. LaBrocca */
-
- #include <stdlib.h>
- #include "mixed.h"
-
- #define NUM 16000 /* highest number to check for being prime */
-
- Integer Primes[ 2000 ];
-
- void init_primes( void )
- {
- char *mark = malloc(NUM * sizeof(char) );
- Integer *pr = Primes; /* point to global array */
- Integer j, k;
-
- for(j = 0; j < NUM; ++j)
- mark[j] = 1; /* mark everything prime */
- for(j = 4; j < NUM; j += 2)
- mark[j] = 0; /* scratch off all the even numbers ... */
- *pr++ = 2; /* ... except for 2; put it in primes array */
- for(j = 3; j < NUM; j += 2) /* check each odd number: */
- if(mark[j]) { /* if it's marked... */
- *pr++ = j; /* ..record it in array.. */
- for(k = j + j; k < NUM; k += j)
- mark[k] = 0; /* ..and scratch off all its multiples */
- }
- free( mark );
- }
- #undef NUM
-
-